package enrique.kurso.lecionoj;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import enrique.kurso.R;

public class Leciono01022 extends Activity{
private MediaPlayer mp;
	TextView aciertos,fallos,porcentaje,restantes;
	ImageButton reproducir,repetir;
	Button boton1,boton2,boton3,boton4,boton5,boton6;
	OnClickListener pulsar;
	int posicion,aciertosValor=0,fallosValor=0,porcentajeValor=0,restantesValor=54,identificadorGrabacion;
	ArrayList<Integer> posiciones,numerosGeneral;
	int duration = 3;
	Boolean terminado = false;
	ArrayList<String> palabras = new ArrayList<String>();
	HashMap<Integer, BotonEjercicioCompresionAuditiva> palabrasGrabacion = new HashMap<Integer, BotonEjercicioCompresionAuditiva>();
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.leciono0102);
		boton1 = (Button) findViewById(R.id.primerBoton);  boton2 = (Button) findViewById(R.id.segundoBoton);
		boton3 = (Button) findViewById(R.id.tercerBoton);  boton4 = (Button) findViewById(R.id.cuartoBoton);
		boton5 = (Button) findViewById(R.id.quintoBoton);  boton6 = (Button) findViewById(R.id.sextoBoton);
		boton1.setOnClickListener((OnClickListener) this); boton2.setOnClickListener((OnClickListener) this); boton3.setOnClickListener((OnClickListener) this);
		boton4.setOnClickListener((OnClickListener) this); boton5.setOnClickListener((OnClickListener) this); boton6.setOnClickListener((OnClickListener) this);
		aciertos = (TextView) findViewById(R.id.aciertos);  fallos = (TextView) findViewById(R.id.fallos);
		porcentaje = (TextView) findViewById(R.id.porcentaje); restantes = (TextView) findViewById(R.id.palabrasRestantes);
		repetir =  (ImageButton) findViewById(R.id.repetir);
		numerosGeneral = new ArrayList<Integer>();
		repetir.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				mp.start();
				
			}
		});
		reproducir = (ImageButton) findViewById(R.id.reproducir);
		
		inicializaPalabrasGrabacion();
		boolean flag;
		int aciertos=0;
		posiciones = getRandomNumbers();
		
		reproduce(posiciones);
	}
	
	public void procesarPulsacion(View v){
		Boolean fallo = null;

		if(((Button)v).getText().equals(palabrasGrabacion.get(posicion).palabra)){
			Log.e("****onClick","acierto");
			aciertosValor++;
			fallo = false;
			restantesValor--;
			posiciones.set(posicion, 0);
			((Button)v).setVisibility(View.INVISIBLE);				
			aciertos.setText(aciertosValor+"");
			restantes.setText(restantesValor+"");
		}else{
			Log.e("****onClick","FALLO");
			fallosValor++;
			fallo = true;
			fallos.setText(fallosValor+"");
		}
		float aux2 = (aciertosValor / (aciertosValor+fallosValor));
		float aux3 = 1/2;
		Log.e("@@@@@######AUX2",aux2+"");
		Log.e("@@@@@######AUX2",aux3+"");
		porcentajeValor = (int) (aux2*100);
		porcentaje.setText(porcentajeValor+"%");
		
		Log.e("@@@@@######",porcentajeValor+"");
		int aux = aciertosValor%6;
		aux = aux *1;
		if(aciertosValor%6 != 0 || aciertosValor == 0){
			Log.e("****onClick","llamo a reproduce porque xk quedan botones para acertar");
			reproduce(posiciones);
		}else{
			if(aciertosValor<54 && !fallo){
				Log.e("****onClick","llamo a generar nuevas palabras");
				posiciones = getRandomNumbers();
				mp.release();
				Log.e("****onClick","llamo a reproduce se crean nuevos botones");
				reproduce(posiciones);
				
			}else if(aciertosValor == 54){
				if(porcentajeValor < 70){
					Toast toast = Toast.makeText(getContext(), R.string.felicitaciones,Toast.LENGTH_LONG);
					toast.show();
					terminado = true;
				}else{
					Toast toast = Toast.makeText(getContext(), R.string.noFelicitaciones,Toast.LENGTH_LONG);
					toast.show();
					terminado = true;
				}
			}	
		}
	}

	public void onClick(View v) {
		
		if(v == reproducir){
			if(terminado){
				Intent i = new Intent(getContext(), Leciono0102.class);
				
				startActivity(i);
			}
		}else{
		    procesarPulsacion(v);
			
				
		}	
	}

	
	
	
	private Context getContext() {
		  return this;
	}
	
	private void inicializaPalabrasGrabacion(){		
		palabrasGrabacion.put(1,new BotonEjercicioCompresionAuditiva("ĝiri", R.raw.gxiri));
		palabrasGrabacion.put(2,new BotonEjercicioCompresionAuditiva("feino", R.raw.feino));
		palabrasGrabacion.put(3,new BotonEjercicioCompresionAuditiva("kvita", R.raw.kvita));
		palabrasGrabacion.put(4,new BotonEjercicioCompresionAuditiva("bela", R.raw.bela));
		palabrasGrabacion.put(5,new BotonEjercicioCompresionAuditiva("knavo", R.raw.knabo));
		palabrasGrabacion.put(6,new BotonEjercicioCompresionAuditiva("feŭdo", R.raw.feuxdo));		
		palabrasGrabacion.put(7,new BotonEjercicioCompresionAuditiva("ago", R.raw.ago));
		palabrasGrabacion.put(8,new BotonEjercicioCompresionAuditiva("ie", R.raw.ie));
		palabrasGrabacion.put(9,new BotonEjercicioCompresionAuditiva("oro", R.raw.oro));
		palabrasGrabacion.put(10,new BotonEjercicioCompresionAuditiva("pezo", R.raw.pezo));
		palabrasGrabacion.put(11,new BotonEjercicioCompresionAuditiva("ĉio", R.raw.cxio));
		palabrasGrabacion.put(12,new BotonEjercicioCompresionAuditiva("prujno", R.raw.prujno));		
		palabrasGrabacion.put(13,new BotonEjercicioCompresionAuditiva("eskalo", R.raw.eskalo));
		palabrasGrabacion.put(14,new BotonEjercicioCompresionAuditiva("ravo", R.raw.ravo));
		palabrasGrabacion.put(15,new BotonEjercicioCompresionAuditiva("ami", R.raw.ami));
		palabrasGrabacion.put(16,new BotonEjercicioCompresionAuditiva("kanabo", R.raw.kanabo));
		palabrasGrabacion.put(17,new BotonEjercicioCompresionAuditiva("iam", R.raw.iam));
		palabrasGrabacion.put(18,new BotonEjercicioCompresionAuditiva("ŝerco", R.raw.sxerco));		
		palabrasGrabacion.put(19,new BotonEjercicioCompresionAuditiva("ĵurnalo", R.raw.jxurnalo));
		palabrasGrabacion.put(20,new BotonEjercicioCompresionAuditiva("felto", R.raw.felto));
		palabrasGrabacion.put(21,new BotonEjercicioCompresionAuditiva("roko", R.raw.roko));
		palabrasGrabacion.put(22,new BotonEjercicioCompresionAuditiva("adiaŭ", R.raw.adiaux));
		palabrasGrabacion.put(23,new BotonEjercicioCompresionAuditiva("hoko", R.raw.hoko));
		palabrasGrabacion.put(24,new BotonEjercicioCompresionAuditiva("alto", R.raw.alto));		
		palabrasGrabacion.put(25,new BotonEjercicioCompresionAuditiva("ĝusta", R.raw.gxusta));
		palabrasGrabacion.put(26,new BotonEjercicioCompresionAuditiva("bona", R.raw.bona));
		palabrasGrabacion.put(27,new BotonEjercicioCompresionAuditiva("ame", R.raw.ame));
		palabrasGrabacion.put(28,new BotonEjercicioCompresionAuditiva("ero", R.raw.ero));
		palabrasGrabacion.put(29,new BotonEjercicioCompresionAuditiva("ia", R.raw.ia));
		palabrasGrabacion.put(30,new BotonEjercicioCompresionAuditiva("peco", R.raw.peco));		
		palabrasGrabacion.put(31,new BotonEjercicioCompresionAuditiva("juro", R.raw.juro));
		palabrasGrabacion.put(32,new BotonEjercicioCompresionAuditiva("ĉelo", R.raw.cxelo));
		palabrasGrabacion.put(33,new BotonEjercicioCompresionAuditiva("ĝene", R.raw.gxene));
		palabrasGrabacion.put(34,new BotonEjercicioCompresionAuditiva("ĵuro", R.raw.jxuro));
		palabrasGrabacion.put(35,new BotonEjercicioCompresionAuditiva("selo", R.raw.selo));
		palabrasGrabacion.put(36,new BotonEjercicioCompresionAuditiva("aŭto", R.raw.auxto));		
		palabrasGrabacion.put(37,new BotonEjercicioCompresionAuditiva("peso", R.raw.peso));
		palabrasGrabacion.put(38,new BotonEjercicioCompresionAuditiva("gusta", R.raw.gusta));
		palabrasGrabacion.put(39,new BotonEjercicioCompresionAuditiva("ju", R.raw.ju));
		palabrasGrabacion.put(40,new BotonEjercicioCompresionAuditiva("ŝia", R.raw.sxia));
		palabrasGrabacion.put(41,new BotonEjercicioCompresionAuditiva("scii", R.raw.scii));
		palabrasGrabacion.put(42,new BotonEjercicioCompresionAuditiva("tio", R.raw.tio));		
		palabrasGrabacion.put(43,new BotonEjercicioCompresionAuditiva("celo", R.raw.celo));	
		palabrasGrabacion.put(44,new BotonEjercicioCompresionAuditiva("scienco", R.raw.scienco));
		palabrasGrabacion.put(45,new BotonEjercicioCompresionAuditiva("diri", R.raw.diri));
		palabrasGrabacion.put(46,new BotonEjercicioCompresionAuditiva("granda", R.raw.granda));
		palabrasGrabacion.put(47,new BotonEjercicioCompresionAuditiva("eĥo", R.raw.ehxo));
		palabrasGrabacion.put(48,new BotonEjercicioCompresionAuditiva("horo", R.raw.horo));	
		palabrasGrabacion.put(49,new BotonEjercicioCompresionAuditiva("ĝeni", R.raw.gxeni));
		palabrasGrabacion.put(50,new BotonEjercicioCompresionAuditiva("ĥoro", R.raw.hxoro));
		palabrasGrabacion.put(51,new BotonEjercicioCompresionAuditiva("hajlo", R.raw.hajlo));
		palabrasGrabacion.put(52,new BotonEjercicioCompresionAuditiva("okazi", R.raw.okazi));
		palabrasGrabacion.put(53,new BotonEjercicioCompresionAuditiva("peĉo", R.raw.pecxo));
		palabrasGrabacion.put(54,new BotonEjercicioCompresionAuditiva("ruino", R.raw.ruino));
		
	}
	
	private ArrayList<Integer> getRandomNumbers(){
		Log.e("****getRandomNumbers","COJO NUMEROS ALEATORIOS PARA COGER PALABRAS ALEATORIAS");
		ArrayList<Integer> numeros = new ArrayList<Integer>();
		Random generator = new Random();
		for(int i=0;i<6;i++){
			int numero = generator.nextInt(palabrasGrabacion.size());
			if(!numerosGeneral.contains(numero)){
				numeros.add(numero);
				numerosGeneral.add(numero);
			}else{
				i--;
			}
		}
		return numeros;
	}
	
	private void reproduce(ArrayList<Integer> posiciones){
		Random generador = new Random();
		mp = null;
		posicion = generador.nextInt(5);
		Integer me;
		
		if(aciertosValor%6 == 0){
			Log.e("****reproduce","PRIMERA VEZ INICILIZO TEXTO BOTONES");
			boton1.setText(palabrasGrabacion.get(posiciones.get(0)).getPalabra()); boton1.setVisibility(View.VISIBLE);
			boton2.setText(palabrasGrabacion.get(posiciones.get(1)).getPalabra()); boton2.setVisibility(View.VISIBLE); 
			boton3.setText(palabrasGrabacion.get(posiciones.get(2)).getPalabra()); boton3.setVisibility(View.VISIBLE);
			boton4.setText(palabrasGrabacion.get(posiciones.get(3)).getPalabra()); boton4.setVisibility(View.VISIBLE);
			boton5.setText(palabrasGrabacion.get(posiciones.get(4)).getPalabra()); boton5.setVisibility(View.VISIBLE);
			boton6.setText(palabrasGrabacion.get(posiciones.get(5)).getPalabra()); boton6.setVisibility(View.VISIBLE);
		}	
		while(posiciones.get(posicion) == 0){
			if(posicion<5){
				posicion++;
			}else{
				posicion=0;
			}
		}	
		identificadorGrabacion = palabrasGrabacion.get(posicion).getIdentificadorAudio();
		mp = MediaPlayer.create(getContext(), identificadorGrabacion);
		mp.start();
	}
}
